/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package zonasoft.Manejadores;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import zonasoft.Conceptos.Eleccion;

/**
 *
 * @author JORGE
 */
public class ManejadorEleccion {
public static Connection con;
    public static Connection conm;
/**Consulta de una eleccion por su id
 */
public static Eleccion getEleccion(String ideleccion) throws SQLException {
if(ideleccion == null){
throw new SQLException("no hay elemento clave en la clase Eleccion");
    }

    ResultSet rs = null;
PreparedStatement pst = null;
Eleccion eleccion = null;
try{
        pst = con.prepareStatement("select * from eleccion where ideleccion = ?");
        pst.setString(1, ideleccion.trim());
        rs = pst.executeQuery();
        while (rs.next()){
            eleccion = Eleccion.load2(rs);
        }
    }finally{
        if (rs != null){
            rs.close();
                    }
        if (pst != null){
           pst.close();
        }
        return eleccion;
    }
}// fin del getEleccion


public static void crearEleccion(Eleccion el) throws SQLException{
if(con == null){
throw new SQLException("no hay conexion");
  }
PreparedStatement pst = null;
try{
    pst=con.prepareStatement("insert into eleccion values (?,?,?,?,?,?)");
  //pst.setString(1, el.getIdlider());
    pst.setString(1, el.getCodEleccion());
pst.setString(2, el.getIdEleccion());
pst.setString(4,el.getNombre());
pst.setString(5, el.getPeriodoInicio());
pst.setString(6,el.getPeriodoFin());
java.sql.Date fechaE= new java.sql.Date(el.getFecha().getTime());
pst.setDate(3, fechaE);
//  System.out.println("pst = " + pst);

pst.executeUpdate();
  
  }finally{
  if(pst != null){
  pst.close();
   }
  }
}// fin de la clase crear eleccion



 // CLASE LISTAR
     private static List listaEleccion;
     public static List getlistaEleccion() {
     return listaEleccion;
}
public static List listarElecciones() throws SQLException, Exception  {
     ResultSet rs = null;
     PreparedStatement pst = null;
     listaEleccion = new LinkedList();
     try {
        pst = con.prepareStatement("select * from eleccion order by codeleccion");
        rs = pst.executeQuery();
        while(rs.next()) {
            listaEleccion.add(Eleccion.load2(rs));
                              }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
        return listaEleccion;
}
    
}// FIN DE LA CLASE LISTAR

public static Collection listaEleccion() throws Exception{

    try {
        Collection <Eleccion> ele = new ArrayList<Eleccion>();
    
String sentencia = "Select * from eleccion";
ManejadorBaseDatos mbd = ManejadorBaseDatos.getInstancia();
mbd.conectar();
PreparedStatement pstmt = (PreparedStatement) mbd.crearSentencia(sentencia);
ResultSet filasBD = mbd.consultaFilas(pstmt);
while (filasBD.next()){
 Eleccion el = Eleccion.load2(filasBD);
 ele.add(el);
  }
return ele;
    }catch(Exception ex){
    throw new Exception("Resultado Negativo de la Base de Datos " + ex.getMessage());
    }
}


public static boolean EliminarEleccion (String ideleccion) throws SQLException{
if(getEleccion(ideleccion)== null){
  throw new SQLException("eleccion registrada")  ;
  }
PreparedStatement pst = null;
boolean res = false;
 try{
     pst = conm.prepareStatement("delete from eleccion where ideleccion = ?");
     pst.setString(1,ideleccion.trim());
     int r = pst.executeUpdate();

if (r != 0){
              res = true;
          }
    }finally {
        if (pst != null){
            pst.close();
        }
    }
    return res;
}


public static boolean ModificarEleccion(Eleccion el, String ideleccion) throws SQLException{
//    System.out.println("ideleccion = " + ideleccion);
if(getEleccion(ideleccion)== null){
  throw new SQLException("eleccion registrada")  ;
  }
PreparedStatement pst = null;
boolean res = false;
 try{                      
     pst = con.prepareCall("update eleccion set nombre =?, periodoinicio=?, periodofin=? where ideleccion=? ");
     pst.setString(4, ideleccion);
     pst.setString(1, el.getNombre());
     pst.setString(2, el.getPeriodoInicio());
     pst.setString(3, el.getPeriodoFin());
//       System.out.println("pst = " + pst);
//       System.out.println("res = " + res);
     int r = pst.executeUpdate();
     
     if (r != 0){
              res = true;
          }
    }finally {
        if (pst != null){
            pst.close();
        }
    }
    return res;
     
 }// fin de la clase modificar eleccion



}// fin de la clase Manejadora
